package com.javabase.y2022.m04.day0408.v1;

import java.util.Arrays;
import java.util.HashSet;

/**
 * @descriptions: Code01_Light
 * @author: Tom
 * @date: 2022/4/8 下午 05:18
 * @version: 1.0
 */
public class Code01_Light {
    public static int minLight1(String road) {
        if (road == null || road.length() == 0) {
            return 0;
        }
        return process(road.toCharArray(), 0, new HashSet<>());
    }

    // str[index....]位置，自由选择放灯还是不放灯
    // str[0..index-1]位置呢？已经做完决定了，那些放了灯的位置，存在lights里
    // 要求选出能照亮所有.的方案，并且在这些有效的方案中，返回最少需要几个灯
    public static int process(char[] str, int index, HashSet<Integer> lights) {

            System.out.println();
            lights.forEach(x -> {
                System.out.print(" " + x);
            });

        if (index == str.length) { // 结束的时候
            for (int i = 0; i < str.length; i++) {
                if (str[i] != 'X') { // 当前位置是点的话
                    if (!lights.contains(i - 1) && !lights.contains(i) && !lights.contains(i + 1)) {
                        return Integer.MAX_VALUE;
                    }
                }
            }
            return lights.size();
        } else { // str还没结束
            // i X .
            int no = process(str, index + 1, lights);
            int yes = Integer.MAX_VALUE;
            if (str[index] == '.') {
                lights.add(index);
                yes = process(str, index + 1, lights);
                lights.remove(index);
            }


//            return Math.min(no, yes);
            return 0;
        }
    }

    public static void main(String[] args) {
        String test = "...";
        int ans1 = minLight1(test);

    }
}
